import re

# ^abc 匹配以abc开头的（在非开头表示否定）
# abc$ 匹配以abc结尾的

# \w 匹配一个字母数字及下划线
# \W 匹配非字母及下划线
print(re.findall("\w", "hello egon 123"))

# \s 匹配任意空白字符，等价于\t制表符、\n换行符、\r回车符、\f换页符
# \S 匹配任意非空字符
print(re.findall("\s", "hello\regon\t123 "))

# \d 匹配任意数字
# \D 匹配任意非数字
print(re.findall("\d", "hello egon 123"))
print(re.findall("\D", "hello egon 123"))

# .替代一个任意字符，意味着多个字符要多个.才能代替
print(re.findall("h..w", "how haaw haa"))
print(re.findall(".", "how can I do"))

# abc* 顺序匹配*左边所有abc，结果可以小于匹配长度但要a开头按顺序且紧密连接（中间漏不算），结尾的c可以匹配多个
print(re.findall("abc*", "ababcccc"))

# 贪吃蛇：一节头多节尾
print(re.findall("ab+", "aabbbb"))

# {n} ???
print(re.findall("ab{2}", "ababaabb"))

